// 这段代码是一个使用 Puppeteer 库进行网页自动化的 TypeScript 模块。以下是对代码的详细解释：

// 导入 Puppeteer 库
import puppeteer, { Page } from 'puppeteer';


// 启动浏览器实例
const browser = puppeteer.launch({
    headless: false, // 非无头模式，可以看到浏览器界面
    userDataDir: 'chromedata', // 指定存储浏览器数据的目录
    args: [
        '--start-maximized', // 启动时最大化窗口
        '--enable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure', // 启用特定的 Cookie 安全特性
        '--no-experiments', // 禁用实验性特性
        '--disable-extensions', // 禁用所有扩展
        '--disable-features=TranslateUI', // 禁用谷歌翻译 UI
        '--use-fake-ui-for-media-stream' // 使用虚假的用户界面处理媒体流请求
    ]
});

// 定义主要的运行函数
async function initPage(): Promise<Page> {
    // 创建新的页面
    const page = await browser.then((b) => b.newPage());
    await page.goto('about:blank');

    // 获取并设置窗口大小
    const { width, height } = await page.evaluate(() => ({
        width: window.outerWidth,
        height: window.outerHeight
    }));
    await page.setViewport({ width, height });
    return page;
}

// 导出 run 函数
export { initPage };

// 这个模块主要用于爬取专利数据，根据不同的 URL 判断数据来源（国内或国外），
// 并将爬取的数据存储在 items 数组中。最后返回这个数组作为 Promise 的结果。